Ext
		.define(
				'Piloto01.controller.Pessoa',
				{
					extend : 'Ext.app.Controller',
					stores : [ 'Pessoas','TipoPessoas' ],
					models : [ 'Pessoa' ],
					views : [ 'Piloto01.view.pessoa.PessoaGrid' ],
					init : function(application) {
						this.control({
							"pessoaGrid" : {
								itemdblclick : this.onGridDblClick
							},
							"pessoaGrid button#add" : {
								click : this.onBtnNovoClick
							},
							"pessoaGrid button#del" : {
								click : this.onBtnDelClick
							},
							"pessoaForm button#cancelar" : {
								click : this.onBtnCancelClick
							},
							"pessoaForm button#salvar" : {
								click : this.onBtnSaveClick
							}

						});
					},
					onGridDblClick : function(grid, record, item, index, e,
							eOpts) {
						var win = Ext.create('Piloto01.view.pessoa.PessoaForm');
						var form = win.down('form');
						console.log(record);
						form.loadRecord(record);
					},
					onBtnNovoClick : function(btn, e, eOpts) {
						var form = Ext
								.create('Piloto01.view.pessoa.PessoaForm');
						form.show();
					},
					onBtnDelClick : function(btn, e, eOpts) {
						var grid = btn.up('pessoaGrid');
						var records = grid.getSelectionModel().getSelection();
						if (records.length > 0) {
							Ext.MessageBox
									.confirm(
											'Atenção',
											'Deseja realmente APAGAR ?',
											function(response) {
												if (response == 'yes') {

													var store = grid.getStore();

													store.remove(records);
													
													store
															.sync({
																succes : function() {
																	Ext.MessageBox
																			.Alert(
																					'Atenção',
																					'Registro apagado!');
																},
																failure : function(
																		rec, op) {
																	Ext.MessageBox
																			.show({
																				title : 'Atenção',
																				msg : 'UM ERRO ACONTECEU!',
																				buttons : Ext.Msg.OK,
																				icon : Ext.MessageBox.ERROR
																			});
																}
															});
													
													grid.getView().refresh();
												}
											});
						}

					},
					onBtnCancelClick : function(btn, e, eOpts) {
						Ext.MessageBox.confirm('Atenção',
								'Deseja realmente sair ?', function(response) {
									if (response == 'yes') {
										var win = btn.up('window');
										var form = win.down('form');
										form.getForm().reset();
										win.close();
									}
								});
					},
					onBtnSaveClick : function(btn, e, eOpts) {
						var win = btn.up('window');
						var form = win.down('form');
						if (!form.isValid())
							return;
						console.log(form.getValues());
						var values = form.getValues(), record = form
								.getRecord(), grid = Ext.ComponentQuery
								.query('pessoaGrid')[0], store = grid
								.getStore();

						if (record) { // edicao

							record.set(values);

						} else { // novo registro

							record = Ext.create('Piloto01.model.Pessoa');
							record.set(values);
							store.add(record);
						}

						store.sync({
							succes : function() {
								Ext.MessageBox.Alert('Atenção','Registro Salvo!');
							},
							failure : function(rec, op) {
								Ext.MessageBox.show({
									title : 'Atenção',
									msg : 'UM ERRO ACONTECEU!',
									buttons : Ext.Msg.OK,
									icon : Ext.MessageBox.ERROR
								});
							}
						});
						grid.getView().refresh();
						win.close();
					}
				});